package cn.ltpcloud.common.pojo.po;

import cn.ltpcloud.common.constant.Regex;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 系统用户
 *
 * @author jiejiebiezheyang
 * @since 2023-04-03 18:06
 */
@TableName(value = "sys_user")
@Data
public class SysUser implements Serializable {

    /**
     * 创建用户校验
     */
    public interface CreateUser {
    }

    /**
     * 更新用户校验
     */
    public interface UpdateUser {
    }

    /**
     * 管理员id
     */
    @TableId(type = IdType.AUTO)
    @NotNull(groups = {UpdateUser.class}, message = "id为空")
    private Integer id;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 用户名
     */
    @NotBlank(groups = {CreateUser.class}, message = "用户名为空")
    private String username;

    /**
     * 密码(加密)
     */
    private String password;

    /**
     * 上一次登录时间
     */
    private Date lastLogin;

    /**
     * 上一次登IP
     */
    private String lastLoginIp;

    /**
     * 最后更新日期
     */
    private Date lastUpdate;

    /**
     * 状态 00 禁用 01 启用
     */
    @NotBlank(groups = {CreateUser.class, UpdateUser.class}, message = "状态为空")
    @Pattern(groups = {CreateUser.class, UpdateUser.class}, regexp = "^(00|01)$", message = "状态错误")
    private String status;

    /**
     * 简介
     */
    private String introduction;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 手机号
     */
    @NotBlank(groups = {CreateUser.class, UpdateUser.class}, message = "手机号为空")
    @Pattern(groups = {CreateUser.class, UpdateUser.class}, regexp = Regex.PHONE, message = "手机号错误")
    private String phone;

    /**
     * 电子邮箱
     */
    private String email;

    /**
     * 小程序用户校区id
     */
    @TableField(exist = false)
    private Integer campusId;

    @Serial
    private static final long serialVersionUID = 1L;
}